<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/12/1
 * Time: 17:32
 */
namespace app\common\helper;

class autoreply_helper
{
    /**
     * 取某条自动回复对应的概况
     * @param int $autoreply_id
     * @return string
     */
    public static function get_autoreply_content_str($autoreply_id)
    {
        //@todo 有待改进
        $type0_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>0));
        $type1_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>1));
        $type2_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>2));
        $type3_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>3));
        $type4_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>4));
        $type10_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>10));
        $type20_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>20));
        $type40_num = getTotal('autoreply_content', array('autoreply_id'=>$autoreply_id, 'content_type'=>40));

        $html = '';
        if ($type0_num) {
            $html .= $type0_num.' 条关联到微官网';
        }
        if ($type1_num) {
            $html .= '，'.$type1_num.' 条纯文本回复';
        }
        if ($type2_num) {
            $html .= '，'.$type2_num.' 条单图文回复';
        }
        if ($type3_num) {
            $html .= '，'.$type3_num.' 条多图文回复';
        }
        if ($type4_num) {
            $html .= '，'.$type4_num.' 条自动图文回复';
        }
        if ($type10_num) {
            $html .= '，'.$type10_num.' 条自动图片回复';
        }
        if ($type20_num) {
            $html .= '，'.$type20_num.' 条自动声音回复';
        }

        if ($type40_num) {
            $html .= '，'.$type40_num.' 条活动回复';
        }

        return str_replace('，', '<br>', trim($html, '，'));
    }

    /**
     * 计数加1
     * @param int $id
     * @return boolean
     */
    public static function add_autoreply_key_match_num($id)
    {
        return update_res_field('autoreply_key', $id, 'match_num', 1);
    }

    /**
     * 取得所有规则
     * @param int $type    自动回复类型 1 关注回复 2：不能识别的回复 3：关键字回复
     * @param int $status  状态
     * @return array
     */
    public static function get_autoreply_list($type, $status = 1, $open_card_id = 0, $company_id = 0)
    {
        if (!$open_card_id) {
            $open_card_id = open_card_helper::get_open_card_id();
        }
        if (!$company_id) {
            $company_id = company_helper::get_company_id();
        }

        $filter = array('company_id'=>$company_id, 'open_card_id'=>$open_card_id, 'type'=>$type, 'status'=>$status);

        return getList('autoreply',$filter, ['id', 'desc'], 0);
    }

    /**
     * 根据自动回复类型，找到一条对应的回复内容
     * @param int $type
     * @return string
     */
    public static function get_autoreply_content_by_type($type, $status = 1, $open_card_id = 0, $company_id = 0)
    {
        $autoreply_list = autoreply_helper::get_autoreply_list($type, $status, $open_card_id, $company_id);
        if (!$autoreply_list) {
            return array();
        }

        $content_info = autoreply_helper::get_autoreply_rand_content($autoreply_list[0]['id']);
        if (!$content_info) {
            return array();
        }

        return $content_info;
    }

    /**
     * 随机取一条自动回复对应的内容
     * @param int $autoreply_id
     * @return array
     */
    public static function get_autoreply_rand_content($autoreply_id)
    {
        $list = self::get_autoreply_content_list($autoreply_id);
        if (!$list) {
            return array();
        }

        if (count($list) == 1) {
            return $list[0];
        }

        $keys = range(0, count($list)-1);
        return $list[array_rand($keys)];
        //return array_rand($list, 1);
    }

    /**
     * 取某条自动回复对应的所有内容
     * @param int $autoreply_id
     * @return array
     */
    public static function get_autoreply_content_list($autoreply_id, $order_type = 1)
    {
        if ($order_type == 1) {
            $order = ['id', 'desc'];
        } else {
            $order = ['id', 'asc'];
        }

        return getList('autoreply_content',array('autoreply_id'=>$autoreply_id), $order, 0);
    }

    /**
     * 取某条自动回复对应的所有key
     * @param int $autoreply_id
     * @return array
     */
    public static function get_autoreply_key_list($autoreply_id, $order_type = 1)
    {
        if ($order_type == 1) {
            $order = ['id', 'desc'];
        } else {
            $order = ['id', 'asc'];
        }

        return getList('autoreply_key', array('autoreply_id'=>$autoreply_id), $order,0);
    }

    /**
     * 取某条自动回复对应的所有key的ids
     * @param int $autoreply_id
     * @return array
     */
    public static function get_autoreply_key_ids($autoreply_id)
    {
        return getFields('autoreply_key', 'id', ['autoreply_id'=>$autoreply_id]);
    }

    /**
     * 取某条自动回复对应的所有内容的ids
     * @param int $autoreply_id
     * @return array
     */
    public static function get_autoreply_content_ids($autoreply_id)
    {
        return getFields('autoreply_content', 'id', ['autoreply_id'=>$autoreply_id]);
    }


    /**
     * 获取关键字对应的回复内容的条数
     * @param unknown $autoreply_id
     * @return unknown
     */
    public static function get_autoreply_content_count($autoreply_id)
    {
        $count = getTotal('autoreply_content', ['autoreply_id'=>$autoreply_id]);

        return $count;
    }

}